package com.upf1sh.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.upf1sh.bean.DataInfo;
import com.upf1sh.bean.FileEntity;
import com.upf1sh.bean.Robot;
import com.upf1sh.mapper.FileMapper;
import com.upf1sh.mapper.RobotMapper;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.List;
import java.util.Objects;

/**
 * UpF1sh
 * 2023/4/13
 * 课题一  Robot Service
 */
@Service
public class TopicOneService {
    @Resource
    private RobotMapper robotMapper;

    @Resource
    private FileMapper fileMapper;

    public List<Robot> getAllRobot() {
        return robotMapper.selectAllByTime();
    }

    public int insert_one(Robot robot) {
        int i = robotMapper.insert(robot);
        return i == 1 ? 1 : 0;
    }

    public int saveRobotData(String data) {
        // 解析接收到的 数字串
        String[] dataArray = data.split(" ");
        System.out.println(dataArray);
        // 创建 Robot 对象并设置属性值
        Robot robot = new Robot();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime dateTime = LocalDateTime.parse((dataArray[0] + " " + dataArray[1]), formatter);
        robot.setTime(dateTime);
        robot.setCO2(Float.parseFloat(dataArray[2]));
        robot.setTemp1(Float.parseFloat(dataArray[3]));
        robot.setHumidity1(Float.parseFloat(dataArray[4]));
        robot.setTemp2(Float.parseFloat(dataArray[5]));
        robot.setHumidity2(Float.parseFloat(dataArray[6]));
        robot.setWindSpeed1(Float.parseFloat(dataArray[7]));
        robot.setWindSpeed2(Float.parseFloat(dataArray[8]));
        robot.setPM1(Float.parseFloat(dataArray[9]));
        robot.setPM25(Float.parseFloat(dataArray[10]));
        robot.setPM10(Float.parseFloat(dataArray[11]));
        robot.setIlluminationIntensity1(Float.parseFloat(dataArray[12]));
        robot.setIlluminationIntensity2(Float.parseFloat(dataArray[13]));
        // 保存 Robot 对象到数据库

        return robotMapper.insert(robot) == 1 ? 1 : 0;
    }

    public DataInfo getFileData(){
        Integer i = fileMapper.selectCount(null);
        DataInfo dataInfo  = new DataInfo();
        dataInfo.setCount(String.valueOf(i));
        QueryWrapper<FileEntity> wrapper = new QueryWrapper<>();
        wrapper.select("sum(size) as total");
        List<Object> objects = fileMapper.selectObjs(wrapper);
        for (Object object : objects) {
            if(Objects.nonNull(object)){
                dataInfo.setSize( object.toString());

            }
        }
        return dataInfo;
    }

    /**
     * excel导入数据库
     * UpF1sh
     * 2023/4/23 20:49
     */

//    public boolean batchImport(String fileName, MultipartFile file) throws Exception {
//        boolean notNull = false;
//        List<Robot> robotList = new ArrayList<Robot>();
//        if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$")) {
////            throw new MyException("上传文件格式不正确");
//            System.out.println("文件格式不正确");
//        }
//        boolean isExcel2003 = true;
//        if (fileName.matches("^.+\\.(?i)(xlsx)$")) {
//            isExcel2003 = false;
//        }
//        InputStream is = file.getInputStream();
//        Workbook wb = null;
//        /**
//         * Excel2003以前的版本，扩展名是.xls,使用HSSFWorkbook()
//         * Excel2007之后的版本，扩展名是.xlsx,使用XSSFWorkbook()
//         */
//        if (isExcel2003) {
//            wb = new HSSFWorkbook(is);
//        } else {
//            wb = new XSSFWorkbook(is);
//        }
//        // 获取excel的第一个sheet页
//        Sheet sheet = wb.getSheetAt(0);
//        if (sheet != null) {
//            notNull = true;
//        }
//        Robot robot;
//        // 循环行数
//        for (int r = 1; r <= sheet.getLastRowNum(); r++) {
//            // 获取sheet的第r行的数据
//            Row row = sheet.getRow(r);
//            if (row == null) {
//                continue;
//            }
//
//            /**
//             * int CELL_TYPE_NUMERIC = 0;
//             * int CELL_TYPE_STRING = 1;
//             * int CELL_TYPE_FORMULA = 2;
//             * int CELL_TYPE_BLANK = 3;
//             * int CELL_TYPE_BOOLEAN = 4;
//             * int CELL_TYPE_ERROR = 5;
//             */
//            String time = row.getCell(0).getStringCellValue();
//            float power = new Double(row.getCell(1).getNumericCellValue()).floatValue();
//            float temp = new Double(row.getCell(2).getNumericCellValue()).floatValue();
//            String coordinate = row.getCell(3).getStringCellValue();
//            float humidity = new Double(row.getCell(4).getNumericCellValue()).floatValue();
//            float windSpeed = new Double(row.getCell(5).getNumericCellValue()).floatValue();
//            float co2 = new Double(row.getCell(6).getNumericCellValue()).floatValue();
//            float illuminationIntensity = new Double(row.getCell(7).getNumericCellValue()).floatValue();
//            float pm1 = new Double(row.getCell(8).getNumericCellValue()).floatValue();
//            float pm25 = new Double(row.getCell(9).getNumericCellValue()).floatValue();
//            float pm10 = new Double(row.getCell(10).getNumericCellValue()).floatValue();
//            String instantFlow = row.getCell(11).getStringCellValue();
//            robot = new Robot();
//            robot.setPower(power);
//            robot.setTemp(temp);
//            robot.setInstantFlow(instantFlow);
//            robot.setTime(time);
//            robot.setCO2(co2);
//            robot.setCoordinate(coordinate);
//            robot.setHumidity(humidity);
//            robot.setIlluminationIntensity(illuminationIntensity);
//            robot.setPM1(pm1);
//            robot.setPM25(pm25);
//            robot.setPM10(pm10);
//            robot.setWindSpeed(windSpeed);
//            robotList.add(robot);
//        }
//        for (Robot robot1 : robotList) {
//            //首先判断该姓名是否已经存在
//            String time = robot1.getTime();
//            Robot rbt = robotMapper.selectByTime(time);
//            if (rbt == null) {
//                //不存在即插入
//                robotMapper.insert(robot1);
//                System.out.println(" 插入 " + robot1);
//            } else {
//                QueryWrapper<Robot> wrapper = new QueryWrapper<Robot>()
//                        .eq("time", time);
//                robotMapper.update(robot1, wrapper);
//                //存在即更新
//                System.out.println(" 更新 " + robot1);
//            }
//        }
//        return notNull;
//    }
//
//
//    public void exportExcel(HttpServletResponse response) throws IOException {
//        List<Robot> list = robotMapper.selectList(null);
//        XSSFWorkbook workbook = new XSSFWorkbook();
//        XSSFSheet sheet = workbook.createSheet("Sheet1");
//        Row row = sheet.createRow(0);
//        row.createCell(0).setCellValue("时间");
//        row.createCell(1).setCellValue("电量");
//        row.createCell(2).setCellValue("温度");
//        row.createCell(3).setCellValue("坐标");
//        row.createCell(4).setCellValue("湿度");
//        row.createCell(5).setCellValue("风速");
//        row.createCell(6).setCellValue("二氧化碳浓度");
//        row.createCell(7).setCellValue("照明强度");
//        row.createCell(8).setCellValue("pm1浓度");
//        row.createCell(9).setCellValue("pm2.5浓度");
//        row.createCell(10).setCellValue("pm10浓度");
//        row.createCell(11).setCellValue("瞬时流量");
//        int rowNum = 1;
//        for (Robot robot : list) {
//            row = sheet.createRow(rowNum++);
//            row.createCell(0).setCellValue(robot.getTime());
//            row.createCell(1).setCellValue(robot.getPower());
//            row.createCell(2).setCellValue(robot.getTemp());
//            row.createCell(3).setCellValue(robot.getCoordinate());
//            row.createCell(4).setCellValue(robot.getHumidity());
//            row.createCell(5).setCellValue(robot.getWindSpeed());
//            row.createCell(6).setCellValue(robot.getCO2());
//            row.createCell(7).setCellValue(robot.getIlluminationIntensity());
//            row.createCell(8).setCellValue(robot.getPM1());
//            row.createCell(9).setCellValue(robot.getPM25());
//            row.createCell(10).setCellValue(robot.getPM10());
//            row.createCell(11).setCellValue(robot.getInstantFlow());
//        }
//        ServletOutputStream outputStream = response.getOutputStream();
//        response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("导出.xlsx", "UTF-8"));
//        response.setContentType("application/vnd.ms-excel;charset=gb2312");
//        workbook.write(outputStream);
//        workbook.close();
//        outputStream.close();
//    }
//
//    //写一个接收文件的函数，将文件存储到/data/file路径下
//    public void saveFile(MultipartFile file) throws IOException {
//
//        //将文件存到本地
//        String filePath = "/data/topicOne/";
//        String fileName = file.getOriginalFilename();
//        File dest = new File(filePath + fileName);
//        if (!dest.getParentFile().exists()) {
//            dest.getParentFile().mkdirs();
//        }
//        file.transferTo(dest);
//    }
//

}



